home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / archiver / zoo21src.zoo / vmsbugs.doc < prev    next >
Text File  |  1991-07-24  |  19KB  |  483 lines

  1.  
  2.  
  3.                            Zoo 2.0 on VAX/VMS
  4.                                    by
  5.                               Rahul Dhesi
  6.  
  7.  
  8. The zoo archiver is used to create and maintain archives containing mul-
  9. tiple files that may be stored in compressed format.  Consult the zoo
  10. manual for more details.  This document describes those features of
  11. VAX/VMS zoo that are specific to the VAX/VMS implementation.
  12.  
  13.  
  14.                               INSTALLATION
  15.  
  16. The file "descrip.mms" is a makefile suitable for use with DEC's imple-
  17. mentation of make, called MMS.  To avoid any confusion, delete the file
  18. called "makefile" as that is not for VAX/VMS systems and it might con-
  19. fuse MMS.  With all source files in the current directory, simply type
  20. MMS and wait while all files get compiled and linked.  Then give the
  21. command "mms fiz" to build "fiz.exe", and "mms blif" to build "bilf.exe".
  22.  
  23. If your system does not have MMS, execute the "vmsbuild.com" script.
  24.  
  25. The result should be the executable program, "zoo.exe", "fiz.exe",
  26. and "bilf.exe".
  27.  
  28. Optionally, the command "mms zoobig.exe" will create a version of the
  29. executable that is linked without the shareable library.  This may be
  30. more portable if you intend to transfer it to an VMS system that does
  31. not have its own C compiler.  But "zoobig.exe" will be about twice the
  32. size of "zoo.exe".
  33.  
  34. To run zoo, bilf, and fiz, you will need to set up symbols by giving
  35. commands similar to the following, either by typing them at the system
  36. prompt or by putting them in your "login.com" file.
  37.  
  38.      $ zoo  :== $ user$disk:[userdir]zoo.exe
  39.      $ fiz  :== $ user$disk:[userfir]fiz.exe
  40.      $ bilf :== $ user$disk:[userdir]bilf.exe
  41.  
  42. In place of "user$disk" use the name of the device on which
  43. your login directory is located, and instead of "userdir" use
  44. the name of the directory in which you have placed the executable
  45. programs "zoo.exe" and "fiz.exe".
  46.  
  47.  
  48.                           WARNING -- VMS BUGS
  49.  
  50. VAX/VMS peculiarities cause unusual bahavior.
  51.  
  52.    - VMS C does not preserve uppercase characters in a command line.  To
  53.      specify a command containing an uppercase character, enclose the
  54.      command in double quotes.  For example, the command
  55.  
  56.           zoo aM stuff *
  57.  
  58.      will not work under VMS.  To make this command work under VMS, use
  59.      double quotes like this:
  60.  
  61.           zoo "aM" stuff *
  62.  
  63.    - For most text files that are not in stream-LF format, VMS returns
  64.      an incorrect file size to zoo.  This will be evident if you use the
  65.      "f" modifier to tell zoo to archive files without compression.
  66.      Files that were in stream-LF format will be stored with the correct
  67.      size;  other text files will be stored with an incorrect value for
  68.      the original size of the file.
  69.  
  70.      When such files are extracted, however, they are extracted in
  71.      stream-LF format, which is the only file format that VMS seems to
  72.      handle correctly.  Thus, so far as I can determine, no file con-
  73.      tents are actually lost, and the only evidence of the problem is
  74.      that in archive listings, files stored without compression may
  75.      still appear to be compressed by about 1 to 5 percent, or occasion-
  76.      ally by some meaningless value.
  77.  
  78.    - VAX/VMS uses many different types of file structures.  Zoo creates
  79.      archives in stream-LF format, and all archives used by zoo in any
  80.      way must be in this format.  It is dangerous to use zoo on an
  81.      archive that is in any other format, because it may permanently
  82.      corrupt the archive contents.  Thus, if you have uploaded an
  83.      archive to a VMS system using Kermit, do not try to manipulate it
  84.      with zoo until you have converted it to stream-LF format.  File
  85.      conversion instructions are given later in this document.
  86.  
  87.    - The VAX/VMS batch system causes the C statement
  88.  
  89.           fflush(stdout);
  90.  
  91.      to become equivalent to:
  92.  
  93.           printf("\n");
  94.  
  95.      The result is that if files are added to a zoo archive from a batch
  96.      run, the batch log will look very strange and contain spurious new-
  97.      lines.
  98.  
  99.  
  100.                         ARCHIVING SELECTED FILES
  101.  
  102. Zoo can read filenames from standard input.  This allows you to use an
  103. external program to generate a list of files to be archived.  When this
  104. list is fed to zoo, it will archive only the selected files.
  105.  
  106. For this example, assume that files are to be archived in an archive
  107. called "backups.zoo".
  108.  
  109. To achieve redirection of input under VAX/VMS, the following steps are
  110. necessary:
  111.  
  112.  1.  Create a file containing the filenames to be archived.  Suppose
  113.      this file is called "names.lis".
  114.  
  115.  2.  Redirect zoo's standard input thus:
  116.  
  117.           $ define /user_mode SYS$INPUT names.lis
  118.  
  119.  
  120.  3.  Invoke zoo thus:
  121.  
  122.           $ zoo "aI" backups
  123.  
  124.      This command line will cause zoo to read a list of filenames from
  125.      its standard input, and archive them into "backups.zoo".  Since the
  126.      logical name SYS$INPUT was changed to refer to the file
  127.      "names.lis", zoo will read filenames from that file.
  128.  
  129. A good way of creating a list of files to be archived is to use the vms
  130. "directory" command.  Include at least the switches shown:
  131.  
  132.      $ directory /noheading /notrailing /column=1 /output=names.lis
  133.  
  134. This tells VMS to produce a list of filenames, one per line, and to
  135. store the resulting output in the file "names.lis".  You can also add
  136. additional selection options.  For example, to select all files that
  137. have been modified in the last 12 hours:
  138.  
  139.      $ dir/nohead/notrail/col=1/out=names.lis/since=-12:00/modified
  140.  
  141. A good way to decrease the effort is to create a symbol as follows:
  142.  
  143.      $ select:=="dir/nohead/notrail/col=1/out=names.lis/modified/since="
  144.  
  145. Now you can archive all *.c files modified in the last 60 minutes by
  146. giving the following commands:
  147.  
  148.      $ select -1:00:00 *.c
  149.      $ define/user sys$input names.lis
  150.      $ zoo "aI" backups
  151.  
  152.  
  153.                        FILE TRANSFERS WITH KERMIT
  154.  
  155. Zoo archives can be uploaded to a VAX/VMS system and downloaded from it
  156. using Kermit.  Due to VMS limitations, some file conversions must be
  157. done to avoid a corrupted zoo archive.
  158.  
  159. Zoo always expects zoo archives to be in stream-LF format.  However, the
  160. standard VAX/VMS Kermit does not create stream-LF files, and treats them
  161. as text files when it reads them, resulting in corrupted downloads.
  162. Thus you must handle Kermit transfers with care. The following discus-
  163. sions refers solely to the standard Kermit-32, which I believe is from
  164. the Stevens Institute of Technology.  If the following instructions are
  165. carefully followed, you should be able to transfer zoo archives between
  166. a VAX/VMS system and a microcomputer running Kermit.
  167.  
  168. KERMIT UPLOADS:  To transfer a zoo archive from a microcomputer to a
  169. VAX/VMS system, do the following.
  170.  
  171.  1.  Invoke VAX/VMS Kermit as shown below.  It will prompt you with the
  172.      string "Kermit-32>".  Give it a command as shown to tell it to
  173.      receive a binary file:
  174.  
  175.           $ kermit
  176.           Kermit-32> set file type binary
  177.           Kermit-32> set block-check 3
  178.           Kermit-32> receive
  179.  
  180.      Note:  Do not use the command "set file type fixed".  In most cases
  181.      it will not work.
  182.  
  183.      The command to set the block-check is optional, but tells Kermit to
  184.      use a 16-bit CRC, which is much more reliable than the default 6-
  185.      bit CRC.  Use this command if your version of Kermit does not use a
  186.      16-bit CRC by default.
  187.  
  188.  2.  At this point, VAX/VMS Kermit is waiting for you to send it a file.
  189.      Now tell your local Kermit to send the file.  On an MS-DOS system,
  190.      using MS-Kermit, you would do this by first typing the local escape
  191.      sequence to get to the local mode, where the prompt is "MS-
  192.      Kermit>", then telling your local Kermit to send the zoo archive as
  193.      a binary file.  A typical sequence of commands is:
  194.  
  195.           (type escape sequence to get back to local mode)
  196.           MS-Kermit> set eof noctrl-z
  197.           MS-Kermit> send stuff.zoo
  198.  
  199.      It is important that your local Kermit send the zoo archive as a
  200.